Operating system configurations are composed of components that contain resources such as file and registry. Each component's footprint can be separated into two constituents: component resources and component dependencies. Footprint optimization faces many problems, including: packaging file/registry resources into components; satisfying required binary file dependencies; and modifying existing large binaries into several smaller ones.
Many operating systems targeted at embedded devices such as thin clients, retail point of sales, and set top boxes have limited space for storing the embedded OS, and the image size becomes crucial part of the final HW product cost. However, non-embedded devices, for which the image size is not a major issue, would benefit from a smaller OS images as well. A smaller OS image uses less memory, boots faster, exposes a smaller hacker attack surface area, and reduces the likelihood of servicing the image.
What is needed are tools and methods for analyzing binaries, components, configurations, and their footprints to help in component design.